package dk.muldbjergskolen.gui;

import java.awt.*;

import javax.swing.JFrame;
import javax.swing.JTextField;
import java.awt.BorderLayout;

import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.UIManager;

import dk.muldbjergskolen.ctr.AnsatCtr;
import dk.muldbjergskolen.ctr.AnsatCtr.UgyldigtLogin;
import dk.muldbjergskolen.model.Ansat;
import javax.swing.JPasswordField;

public class Login {
	private JFrame frame;
	private JTextField txtBrugernavn;
	private JPasswordField txtPwAdgangskode;
	private JButton btnLogin;

	/**
	 * åbner applikationen
	 */
	public static void main(String[] args) {
		try {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		} catch (Throwable e) {
			e.printStackTrace();
		}
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Login window = new Login();
					window.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the application.
	 */
	public Login() {
		initialize();
	}

	/**
	 * Initialize the contents of the frame.
	 */
	private void initialize() {
		frame = new JFrame();
		frame.setBounds(100, 100, 258, 146);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		JPanel lblAdgangskode = new JPanel();
		frame.getContentPane().add(lblAdgangskode, BorderLayout.CENTER);
		lblAdgangskode.setLayout(null);

		txtBrugernavn = new JTextField();
		txtBrugernavn.setBounds(106, 11, 127, 20);
		lblAdgangskode.add(txtBrugernavn);
		txtBrugernavn.setColumns(10);
		txtBrugernavn.addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent e) {
				int key = e.getKeyCode();
				if (key == KeyEvent.VK_ENTER) {
					logPaa();
				}
			}
		});

		JLabel lblBrugernavn = new JLabel("Brugernavn:");
		lblBrugernavn.setBounds(10, 14, 86, 14);
		lblAdgangskode.add(lblBrugernavn);

		JLabel label = new JLabel("Adgangskode:");
		label.setBounds(10, 43, 86, 14);
		lblAdgangskode.add(label);

		btnLogin = new JButton("Login");
		btnLogin.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				logPaa();
			}
		});

		btnLogin.setBounds(106, 71, 89, 23);
		lblAdgangskode.add(btnLogin);

		txtPwAdgangskode = new JPasswordField();
		txtPwAdgangskode.setBounds(106, 40, 127, 20);
		lblAdgangskode.add(txtPwAdgangskode);
		txtPwAdgangskode.addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent e) {
				int key = e.getKeyCode();
				if (key == KeyEvent.VK_ENTER) {
					logPaa();
				}
			}
		});
	}

	public void logPaa() {
		// Hent indtastede værdier fra tekstfelt.
		String brugernavn = txtBrugernavn.getText();
		char[] kode = txtPwAdgangskode.getPassword();
		txtPwAdgangskode.setText("");
		String adgangskode = new String(kode);

		AnsatCtr aCtr = new AnsatCtr();
		Ansat brugerlogin = null;
		try {
			// Få fat i ansat objektet.
			brugerlogin = aCtr.getAnsat(brugernavn, adgangskode);
		} catch (UgyldigtLogin e) {
			JOptionPane.showMessageDialog(null,
					"Forkert brugernavn og/eller adgangskode.");
			return;
		}

		Main m = new Main(brugerlogin);
		m.setVisible(true);
	}
}
